home *** CD-ROM | disk | FTP | other *** search
/ Micromanía: 150 Juegos 2010 / 150Juegos_16.iso / Shareware / Juegos Flash / dragon_ball_z.dir / scripts_60_player_object.ls < prev    next >
Encoding:
Text File  |  2003-01-18  |  6.5 KB  |  339 lines

  1. property ancestor, p_player_type, p_char_num, p_player_num, p_health, p_max_health, p_power, p_max_power, p_used_projectiles, p_quadrant, p_move, p_aim, p_attack, p_effectiveness_index, p_defend, p_previous_quadrant, p_attack_done, p_dead, p_die_counter
  2. global g_game
  3.  
  4. on new me, t_char_num, t_player_type, t_player_num
  5.   if t_player_type = #human then
  6.     ancestor = script("human_player_object").new()
  7.   else
  8.     ancestor = script("computer_player_object").new()
  9.   end if
  10.   p_player_type = t_player_type
  11.   p_char_num = t_char_num
  12.   p_player_num = t_player_num
  13.   p_dead = 0
  14.   return me
  15. end
  16.  
  17. on init_player me
  18.   p_max_health = 100
  19.   p_health = p_max_health
  20.   p_max_power = 100
  21.   p_power = p_max_power / 2
  22.   p_defend = 0
  23.   if p_player_num = 1 then
  24.     p_quadrant = #bottom_left
  25.   else
  26.     p_quadrant = #bottom_right
  27.   end if
  28.   me.reset_strategy()
  29. end
  30.  
  31. on reset_strategy me
  32.   p_used_projectiles = []
  33.   p_move = VOID
  34.   p_aim = VOID
  35.   p_attack = VOID
  36.   p_effectiveness_index = VOID
  37.   p_attack_done = VOID
  38.   if p_defend > 0 then
  39.     p_defend = p_defend - 1
  40.   end if
  41. end
  42.  
  43. on get_player_type me
  44.   return p_player_type
  45. end
  46.  
  47. on get_quadrant me
  48.   return p_quadrant
  49. end
  50.  
  51. on get_char_num me
  52.   return p_char_num
  53. end
  54.  
  55. on get_move me
  56.   return p_move
  57. end
  58.  
  59. on set_move me, t_move
  60.   p_move = t_move
  61.   if p_player_type = #human then
  62.     call(#hide, me.get_move_sprites())
  63.   end if
  64. end
  65.  
  66. on do_move me, quadrant
  67.   p_previous_quadrant = p_quadrant
  68.   if symbolp(quadrant) then
  69.     p_quadrant = quadrant
  70.   else
  71.     p_quadrant = p_move
  72.   end if
  73. end
  74.  
  75. on move_to_previous_position me
  76.   me.do_move(p_previous_quadrant)
  77. end
  78.  
  79. on show_attack me
  80.   if p_player_type = #human then
  81.     call(#show, me.get_attack_sprites())
  82.   end if
  83. end
  84.  
  85. on set_attack me, attack
  86.   if p_player_type = #human then
  87.     if attack = 8 then
  88.       attack = attack + p_char_num - 1
  89.     end if
  90.   end if
  91.   if listp(me.get_attack_list().getaProp(attack)) then
  92.     p_attack = me.get_attack_list().getaProp(attack)
  93.     case p_attack.type of
  94.       1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15:
  95.         p_aim = #none
  96.     end case
  97.     if p_player_type = #human then
  98.       call(#hide, me.get_attack_sprites())
  99.     end if
  100.   end if
  101. end
  102.  
  103. on get_attack me
  104.   return p_attack
  105. end
  106.  
  107. on show_aim me
  108.   case p_attack.type of
  109.     2, 3, 4:
  110.       if p_player_type = #human then
  111.         call(#show, me.get_aim_sprites())
  112.       end if
  113.   end case
  114. end
  115.  
  116. on set_aim me, aim
  117.   if p_move <> aim then
  118.     p_aim = aim
  119.     if p_player_type = #human then
  120.       call(#hide, me.get_aim_sprites())
  121.     end if
  122.   end if
  123. end
  124.  
  125. on get_aim me
  126.   return p_aim
  127. end
  128.  
  129. on show_effectiveness me
  130.   call(#show, me.get_effectiveness_sprites())
  131. end
  132.  
  133. on hide_effectiveness me
  134.   call(#hide, me.get_effectiveness_sprites())
  135. end
  136.  
  137. on defend me
  138.   p_defend = 2
  139. end
  140.  
  141. on hit me
  142.   p_defend = 0
  143. end
  144.  
  145. on update_power_bar me
  146.   me.update_power(-p_attack.cost)
  147. end
  148.  
  149. on update_health me, health
  150.   p_health = max(min(p_health + health, 100), 0)
  151.   me.get_health_bar_sprite().update(float(p_health) / p_max_health)
  152.   if health < 0 then
  153.     me.update_power(-10)
  154.   end if
  155.   if p_health = 0 then
  156.     me.die()
  157.   end if
  158. end
  159.  
  160. on update_power me, power
  161.   p_power = max(min(p_power + power, 100), 0)
  162.   me.get_power_bar_sprite().update(float(p_power) / p_max_power)
  163. end
  164.  
  165. on attack_available me, attack
  166.   if attack = 8 then
  167.     attack = attack + me.get_char_num() - 1
  168.   end if
  169.   if listp(me.get_attack_list().getaProp(attack)) then
  170.     return 1
  171.   else
  172.     return 0
  173.   end if
  174. end
  175.  
  176. on aim_available me, aim
  177.   if p_move = aim then
  178.     return 0
  179.   else
  180.     return 1
  181.   end if
  182. end
  183.  
  184. on shield_active me, player_num
  185.   if p_defend > 0 then
  186.     return 1
  187.   else
  188.     return 0
  189.   end if
  190. end
  191.  
  192. on move_necessary me, player_num
  193.   if p_move <> p_quadrant then
  194.     return 1
  195.   else
  196.     return 0
  197.   end if
  198. end
  199.  
  200. on get_move_type me, quadrant, move
  201.   case quadrant of
  202.     #top_left:
  203.       case move of
  204.         #top_right, #bottom_right:
  205.           return 1
  206.         #bottom_left:
  207.           return 2
  208.       end case
  209.     #top_right:
  210.       case move of
  211.         #top_left, #bottom_left:
  212.           return 1
  213.         #bottom_right:
  214.           return 2
  215.       end case
  216.     #bottom_left:
  217.       case move of
  218.         #top_left:
  219.           return 3
  220.         #top_right, #bottom_right:
  221.           return 1
  222.       end case
  223.     #bottom_right:
  224.       case move of
  225.         #top_left, #bottom_left:
  226.           return 1
  227.         #top_right:
  228.           return 3
  229.       end case
  230.   end case
  231. end
  232.  
  233. on get_fire_direction me
  234.   case p_quadrant of
  235.     #top_left:
  236.       case p_aim of
  237.         #top_right:
  238.           return 1
  239.         #bottom_right:
  240.           return 3
  241.         #bottom_left:
  242.           return 5
  243.       end case
  244.     #top_right:
  245.       case p_aim of
  246.         #top_left:
  247.           return 1
  248.         #bottom_left:
  249.           return 3
  250.         #bottom_right:
  251.           return 5
  252.       end case
  253.     #bottom_left:
  254.       case p_aim of
  255.         #top_left:
  256.           return 4
  257.         #top_right:
  258.           return 2
  259.         #bottom_right:
  260.           return 1
  261.       end case
  262.     #bottom_right:
  263.       case p_aim of
  264.         #top_left:
  265.           return 2
  266.         #bottom_left:
  267.           return 1
  268.         #top_right:
  269.           return 4
  270.       end case
  271.   end case
  272. end
  273.  
  274. on random_move me, quadrant
  275.   move_list = [#top_right, #top_left, #bottom_right, #bottom_left]
  276.   move_list.deleteOne(p_quadrant)
  277.   move_list.deleteOne(quadrant)
  278.   p_quadrant = move_list[random(move_list.count())]
  279. end
  280.  
  281. on get_special_move_direction me
  282.   case p_quadrant of
  283.     #top_right, #top_left:
  284.       return 3
  285.     #bottom_right, #bottom_left:
  286.       return 2
  287.   end case
  288. end
  289.  
  290. on remove_shield me
  291.   p_defend = 0
  292. end
  293.  
  294. on set_attack_done me
  295.   p_attack_done = 1
  296. end
  297.  
  298. on get_attack_done me
  299.   return p_attack_done
  300. end
  301.  
  302. on get_shield me
  303.   return p_defend
  304. end
  305.  
  306. on die me
  307.   timeout("dead_timer" & string(p_player_num)).new(35, #do_explosion, me)
  308.   p_attack_done = 1
  309. end
  310.  
  311. on do_explosion me
  312.   player_sprite = me.get_player_sprite()
  313.   projectile_sprite = me.use_projectile_sprite()
  314.   if objectp(projectile_sprite) then
  315.     if count(projectile_sprite.scriptInstanceList) > 0 then
  316.       projectile_sprite.show(player_sprite.loc, "hit_", 9, [#type: 2, #cost: 5, #damage: [0, 2, 4]], 10)
  317.     end if
  318.   end if
  319.   p_die_counter = p_die_counter + 1
  320.   if p_die_counter = 8 then
  321.     timeout("dead_timer" & string(p_player_num)).forget()
  322.     p_dead = 1
  323.     call(#destroy_projectile, p_used_projectiles)
  324.     me.set_attack_done()
  325.     player_sprite.set_ancestor(script("die_object").new(player_sprite, p_player_num))
  326.   end if
  327. end
  328.  
  329. on tell_used_projectile_sprite me, proj_sprite
  330.   p_used_projectiles.add(proj_sprite)
  331. end
  332.  
  333. on is_human me
  334.   if p_player_type = #human then
  335.     return 1
  336.   end if
  337.   return 0
  338. end
  339.